
# -*- coding: utf-8 -*-
"""
@文件    :   dispose_table.py
@时间    :   2022/05/24 08:55:53
@作者    :   YTNetMan
@版本    :   1.0
@邮箱    :   ytnetman@163.com
@版权    :   (C)Copyright 2022-2025
@分类    :   办公自动化
@功能    :   对年月日的处理
"""

#timedelta 时间间隔
from datetime import date, timedelta

import pandas as pd

#books = pd.read_excel('./doc/example5.xlsx')    #读文件，发现有很多脏数据
#books = pd.read_excel('./doc/example5.xlsx',skiprows=3)  #跳过3行开始读，这时还有两列没有数据 
#usecols='c:f' 意思是用到的列是C到F，因为没有跳过列的方法
#books = pd.read_excel('./doc/example5.xlsx',skiprows=3,usecols='c:f')
books = pd.read_excel('./doc/example5.xlsx',
                      skiprows=3,
                      usecols='c:f',
                      dtype={'ID':str,'Instore':str,'Date':str},
                      index_col = None   
)
#设定第一列的起始日期
start = date(2016,1,1) 
#excel表中日期列月份+1的函数
def add_month(start,i):    #start 起始日期 i加几个月
    yd = i//12             #取整，年的进位数值
    m = start.month + i%12  #取余，设定月份值
    if m !=12:               #正好12倍数时，只是年份进位
        yd += m//12          #其他情况年进位，月取余
        m =m%12
    return date(start.year+yd,m,start.day)
 
#1、按Series(列)填充数据
for i in books.index:
    books['ID'].at[i] = i+1     #这时我们发现ID的数值是从1.0.开始的，说明NaN的数据类型是浮点型，修改第8行
    #if条件表达式
    books['Instore'].at[i] = 'Yes' if i%2==0 else 'No'
    # books['Date'].at[i] = date(start.year+i,start.month,start.day)  #年+1
    # books['Date'].at[i] = start+timedelta(days=i)   #日+1
    #books['Date'].at[i] = date(start.year+i,start.month+i,start.day)  #月+1，会出错
    books['Date'].at[i] = add_month(start,i)     #用这个月+1
print(books)

#2、按Frame(单元格）的方式填充数据
# for i in books.index:
#     books.at[i,'ID'] = i+1
#     books.at[i,'Instore'] = 'Yes' if i%2==0 else 'No'
#     books.at[i,'Date'] = add_month(start,i)

books.set_index('ID',inplace=True)  #设置新文件的索引是ID    
print(books)
books.to_excel('./doc/example5_1.xlsx')
